This application is related to co-pending applications entitled xe2x80x9cSystem and Method for Verifying Superscalar Computer Architecturesxe2x80x9d, Ser. No. 10/113,756, and xe2x80x9cSystem and Method for Facilitating Programmable Coverage Domains for a Testcase Generatorxe2x80x9d, Ser. No. 10/113,319 which were both filed on Mar. 28, 2002 and are incorporated herein by reference in their entireties.
This invention relates to integrated circuit testing and, more particularly, the invention relates to a method and system for facilitating coverage feedback testcase generation reproducibility.
The proliferation of modern electronics into our everyday lives is due in large part to the existence, functionality and relatively low cost of advanced integrated circuits. As technology moves ahead, the sophistication of integrated circuits increases. An important aspect of designing an advanced integrated circuit is the ability to thoroughly test the design of the integrated circuit to assure the design complies with desired architectural, performance, and design parameters. Testing a complex integrated circuit such as a superscalar microprocessor requires the generation of a large number of instruction sequences to assure that the microprocessor behaves properly under a wide variety of circumstances.
Verification techniques generally require automated testing systems that can turn out high volume testcases in an effort to sufficiently cover the realm of possible behaviors of the integrated circuit being tested. Testcases may be generated by a testcase generator in accordance with parameters specified in a file that are provided by a software design specialist or engineer, otherwise the generator generates random testcases.
Verification of microprocessors usually entails the definition of coverage domain(s) for use in measuring the effectiveness of various testcases and testcase generators. These domains are typically static once they are created and are persistent across the entire duration of the verification phase of a development cycle. The resulting coverage information from the testcase is collected and recorded for each entry in these domains and typically kept in a large central database as a cumulative history. These domains are typically a cross-product of various components of the machine state, instructions, and instruction results. For example, where an instruction=xe2x80x9cwxe2x80x9d, addressing mode(s)=xe2x80x9cxxe2x80x9d, translation mode(s)=xe2x80x9cyxe2x80x9d, and resulting condition codes=xe2x80x9czxe2x80x9d, the corresponding state space would equal w*x*y*z. As one might suspect, this state space can grow quite large and maintaining records for each state can be memory/compute intensive. Further, adding sequences of events to the coverage domain would expand this state space exponentially.
When using this coverage domain information in a testcase generator employing an internal coverage feedback system for generating xe2x80x9cinterestingxe2x80x9d (e.g., unusual, rare) testcases, maintaining the smallest domain is optimal. It would also be beneficial to generate testcases based only on what has transpired in the current generation session, in addition to referencing the total cumulative coverage history. Other desirable functions include generating a comprehensive test suite, allowing user control over coverage policies, profiling initialization settings, and profiling generation tools.
There may be times when it is desirable to reproduce a testcase that was generated with coverage feedback. One known method of reproducing a testcase is to regenerate all prior testcases 1, 2, . . . , nxe2x88x921. This is slow and inefficient. When coverage feedback mechanisms are employed in testcase generation, the pseudo-random seed is not the only factor influencing decisions, but can also include the current state of the defined coverage domain element(s). Thus, the coverage state at the time of generating testcase xe2x80x98nxe2x80x99 must be reproduced.
An exemplary embodiment of the invention relates to a system and method for facilitating coverage feedback testcase generation reproducibility. The system comprises a testcase generator comprising an instruction generator and an instruction simulator; an internal coverage domain accessible to the testcase generator, a regeneration file storing updated testcase data; and a temporary holding structure. The internal coverage domain comprises: coverage domain elements; a session component; and a prior cumulative history component. Upon generating a testcase by the testcase generator, a regeneration file is constructed utilizing testcase data updates acquired during execution of the testcase. The updates are provided by the temporary holding structure. The invention also comprises a method and storage medium.
The above-described and other features and advantages of the present invention will be appreciated and understood by those skilled in the art from the following detailed description, drawings, and appended claims.